let mongoose=require('mongoose');
const Schema = mongoose.Schema;

// let url='mongodb://localhost:27017/test'
let url=process.env.NODE_ENV === 'production' ? '47.110.49.31:27019' : 'mongodb://localhost:27017/test';

// 连接mongodb数据库
// mongoose.connect('mongodb://localhost:27019/test',{ useNewUrlParser: true });
mongoose.connect('mongodb://47.110.49.31:27019/test',{ useNewUrlParser: true, useFindAndModify: false });
let db=mongoose.connection;

db.on('error',()=>{
  console.log('db连接失败')
})


db.once('open',()=>{
  console.log('db连接成功')
})

db.once('close',()=>{
  console.log('db断开连接')
})

 
// topic 
// mytag  演员/地区/年份
// member-group普通会员/匿名用户



// 播放表
/**
 * address  播放地址 一对多
 */
let playSchema=new Schema ({
  // _id:ObjectId 和movie表一致的id
  // list:[{name:String}]
  playLink:{
    type:String,
    default:'xxxxx'
  },
})



// 定义schema数据库模型骨架，不具备操作能力
/**
 * 视频信息表
 * 参数： name 名字
 *       preImg 预览图
 *  progressPre 进度预览图
 *       auth   作者/主播
 *   createTime 创建时间
 *     language 语言
 *         des 描述
 *      commend 轮播图推荐
 *  commendInfo 轮播图副标题 
 *       commendImg 热点轮播图
 *         upId 分类
 * 
 */
let movieSchema=new Schema({
  // _id:Schema.Types.ObjectId,
  name: String,
  // 图片
  preImg:String,
  // 预览视频
  preVideo:String,
  // 视频分类
  // channelType:String,
  des:String,
  auth:String,
  createTime:String,
  language:String,
  // 首页推荐
  commend:{
    default:0,
    type:Number
  },
  // 副标题
  commendInfo:String,
  // 推荐图片
  commendImg:String,
  upId:{
    deafult:0,
    type:Number
  },
  playId:{
    type:Schema.Types.ObjectId, 
    ref:'play' 
  },
  playUrl:{
    default:'',
    type:String
  },
  // 创建时间,  前端不用传
  created_at: {
    type: Number,
    default: Date.now
  },
  // 更新时间
  updated_at: {
    type: Number,
    default: Date.now()
  },
  // 角色集合
  roles: {
    type: Array,
    default: []
  },
  // 视频分类集合
  tags: {
    type: Array,
    default: []
  },
  recommend: {
    type: Boolean,
    default: true
  },
  sixList: {
    type: Array,
    default: []
  },
  // 特点
  hallmarks: {
    type: Array,
    default: []
  }
});





// 静态方法
movieSchema.statics = {
  search (param,call) {
    return this.find({$or:[{name:new RegExp(param.name, 'i')}]}).skip(5*(param.page-1)).limit(5).exec(call);
  },
  getPlay(_id,call) {
    return this.find({_id:_id}).populate('playId').exec(call);
  }
}


/**
 * 评论表
 * createTime 创建时间
 *        msg 评论信息
 *      agree 同意
 *      anti  反对
 *      reply  回复对应
 *    isCheck  审核 1/0
 *         ip  评论
 */
let commentSchema=new Schema ({
  createTime:Number,
  msg:String,
  agree:{
    default:0,
    type:Number,
  },
  anti:{
    default:0,
    type:Number
  },
  reply:{
    default:0,
    type:Number
  },
  isCheck:{
    default:1,
    type:Number
  }
})




// 分类表
/**
 *       name   名字
 *       upId   分类/0 为顶级
 *    keyword   关键词
 *        des   描述
 */
let typeSchema=new Schema ({
  name:String,
  upId:{
    default:0,
    type:Number,
  },
  keyword:String,
  des: {
    type: String,
    default: ''
  },
  created_at: {
    type: Number,
    default: Date.now
  },
  // 更新时间
  updated_at: {
    type: Number,
    default: Date.now()
  },
})

// movie_type
// tag分类把movieID和typeId存储一张表,关联键两个为主键
// mid  tid
// 11   x
// 12  xx 
// 11  xxx

// movie-direct 演员表
// 中间表同上



// 友情链接表
/**
 *      name  名字
 *      link  链接
 *   linkImg  友情图像
 * 
 */
friendSchema=new Schema({
  name:String,
  link:String,
  linkImg:String
})




let roleSchema=new Schema ({
  name:String,
  des: {
    type: String,
    default: ''
  },
  nameImgs:{
    type:Array,
    default:[]
  },
  status:{
    type:Boolean,
    default:true
  },
  created_at: {
    type: Number,
    default: Date.now
  },
  // 更新时间
  updated_at: {
    type: Number,
    default: Date.now()
  },
  // 介绍
  intro:{
    type:String,
    default:''
  },
  // 介绍图片
  introImgs:{
    type:Array,
    default:[]
  }
  
})




// 编译model构造器，每一个实列就是document,方便调用写对象里
let Models={
  movie:mongoose.model('movie',movieSchema,'movie'),
  comment:mongoose.model('comment',commentSchema,'comment'),
  play:mongoose.model('play',playSchema,'play'),
  type:mongoose.model('type',typeSchema,'type'),
  friend:mongoose.model('friend',friendSchema,'friend'),
  role:mongoose.model('role',roleSchema,'role'),
};

Schema.ObjectId


// Models.movie.create(
//   {name:'极限杀手1',preImg:'http://qn.ty8000.com/image/micro/sjmn.jpg',
// auth:'hjk',createTime:123123342,language:'普通话',des:'极限杀手是最新的科幻片代表作,是著名导演',
// commendInfo:'这里是关于极限杀手的简介',commend:1,commendImg:'https://img1.gtimg.com/v/pics/hv1/115/69/2276/148014610.jpg',upId:1,
// preVideo:'http://qn.ty8000.com/video/micro/ylsjmn.mp4'
// },(err,doc)=>{
//   if(err) throw err;
//   Models.play.create({
//     _id:doc._id,
//     playLink:'aaaaa'
//   })
// })





module.exports=Models;


